home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung CD 2 (Tewi)(1994).iso / c / crosscom / tptc / tptc17.inf < prev    next >
Text File  |  1988-08-16  |  17KB  |  324 lines

  1. TPTC - Turbo Pascal to C translator, version 1.7, 25-Mar-88
  2. by Samuel H. Smith.
  3.  
  4. This program will read a Turbo Pascal source file and convert it into
  5. the corresponding C source code.  It does much of the work required in
  6. a full translation.
  7.  
  8. TPTC is Copywrited Shareware, delivered in three archives:
  9.  
  10. TPTC17.ARC - 03-26-88 - Translate Turbo Pascal to C.  Exe+DOC files.
  11. This is the main distribution archive.  It contains the translator,
  12. documentation and a few supporting files.   See HISTORY.DOC for the
  13. revision history, including changes since the manual was last updated.
  14. See TODO.DOC for a list of changes that are planned in the near future.
  15.  
  16. TPTC17SC.ARC - 03-26-88 - Full Source Code for TPTC.  SourceWare.
  17. This is the complete source code for TPTC.  This is distributed
  18. under the SourceWare concept.  See the file LICENSE.DOC for details.
  19.  
  20. TPTC17TC.ARC - 03-26-88 - A number of Test Cases for TPTC.  This archive
  21. contains a number of "test cases" used to verify the operation of TPTC.
  22. New test cases are added as the translator development proceeds.
  23.  
  24. Contents of the archives follow
  25.  
  26. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  27.  
  28. Archive:  TPTC17.ARC
  29.  
  30. Name          Length    Stowage    SF   Size now  Date       Time    CRC 
  31. ============  ========  ========  ====  ========  =========  ======  ====
  32. ERRORS.DOC        4200  Crunched   46%      2252  26 Mar 88  14:59   E97E
  33. HISTORY.DOC       9788  Crunched   50%      4824  26 Mar 88  13:01   FBA4
  34. LICENSE.DOC       1992  Crunched   41%      1174  14 Feb 88  19:48   3F30
  35. README            4062  Crunched   46%      2192  26 Mar 88  12:38   FB42
  36. T2C.BAT            493  Crunched   22%       382  26 Mar 88  05:34   6D5F
  37. TODO.DOC           690  Crunched   32%       469  25 Mar 88  20:24   2419
  38. TPTC.DOC         11448  Crunched   52%      5481  25 Mar 88  18:11   FB8A
  39. TPTC.EXE         61920  Crunched   34%     40828  26 Mar 88  19:12   701A
  40. TPTCMAC.H         5593  Crunched   50%      2796  26 Mar 88  05:47   1AF5
  41. TPTCSYS.PAS       4629  Crunched   50%      2309  26 Mar 88  05:47   B804
  42. TPTCSYS.UNS       1462  Crunched   47%       772  26 Mar 88  15:14   E12A
  43. UNINC.EXE         4896  Crunched   22%      3790  26 Mar 88  12:10   5901
  44. >*total     12  111173             39%     67269
  45.  
  46. Archive:  TPTC17SC.ARC
  47.  
  48. Name          Length    Stowage    SF   Size now  Date       Time    CRC 
  49. ============  ========  ========  ====  ========  =========  ======  ====
  50. ATOI.INC           928  Crunched   41%       542  25 Mar 88  17:02   B530
  51. COMPALL.BAT         50    -----     1%        50  24 Mar 88  19:57   4EE0
  52. COMPOLD.BAT         34    -----     1%        34  15 Mar 88  19:02   79CB
  53. DOALL.BAT          282  Crunched   18%       231  26 Mar 88  15:16   C15D
  54. DOSTD.BAT          332  Crunched   28%       239  26 Mar 88  05:35   9BD1
  55. FTOA.INC           189  Crunched   17%       156  25 Mar 88  17:02   0DC0
  56. GETENV.INC         767  Crunched   38%       473  25 Mar 88  17:02   5516
  57. GO.BAT              21    -----     2%        21  08 Aug 87  20:32   28B3
  58. HISTORY.DOC       9788  Crunched   50%      4824  26 Mar 88  13:01   FBA4
  59. ITOA.INC           306  Crunched   34%       201  25 Mar 88  17:02   7AC3
  60. KEYPRESS.INC       502  Crunched   49%       256  25 Mar 88  17:02   A410
  61. LICENSE.DOC       1992  Crunched   41%      1174  14 Feb 88  19:48   3F30
  62. LJUST.INC          219  Crunched   22%       170  25 Mar 88  17:02   0EB9
  63. LOOK.BAT            34    -----     1%        34  12 Mar 88  12:46   9DA4
  64. MAKE.BAT            12    -----     4%        12  17 Mar 88  18:04   F515
  65. README            4062  Crunched   46%      2192  26 Mar 88  12:38   FB42
  66. STOUPPER.INC      1043  Crunched   56%       451  25 Mar 88  17:02   D28C
  67. T2C.BAT            493  Crunched   22%       382  26 Mar 88  05:34   6D5F
  68. TPCDECL.INC      17316  Crunched   65%      5928  26 Mar 88  19:08   FEEC
  69. TPCEXPR.INC      18210  Crunched   63%      6596  26 Mar 88  05:48   F25F
  70. TPCMISC.INC       4471  Crunched   59%      1820  26 Mar 88  15:13   4075
  71. TPCSCAN.INC      19588  Crunched   65%      6702  26 Mar 88  12:32   90E3
  72. TPCSTMT.INC      23751  Crunched   65%      8134  25 Mar 88  20:36   2EA0
  73. TPCSYM.INC        7348  Crunched   60%      2871  26 Mar 88  15:12   5E75
  74. TPCUNIT.INC      12703  Crunched   60%      4964  26 Mar 88  14:44   6CB8
  75. TPTC.PAS         17770  Crunched   56%      7657  26 Mar 88  12:23   45D9
  76. TPTCMAC.H         5593  Crunched   50%      2796  26 Mar 88  05:47   1AF5
  77. TPTCSYS.PAS       4629  Crunched   50%      2309  26 Mar 88  05:47   B804
  78. UNINC.PAS         4867  Crunched   51%      2352  26 Mar 88  12:10   AF21
  79. UPD.BAT            155  Crunched   21%       122  26 Mar 88  08:18   BA34
  80. >*total     30  157455             59%     63693
  81.  
  82. Archive:  TPTC17TC.ARC
  83.  
  84. Name          Length    Stowage    SF   Size now  Date       Time    CRC 
  85. ============  ========  ========  ====  ========  =========  ======  ====
  86. ACKER.PAS          369  Crunched   32%       249  25 Mar 88  17:02   0D99
  87. COMPALL.BAT         50    -----     1%        50  24 Mar 88  19:57   4EE0
  88. COMPOLD.BAT         34    -----     1%        34  15 Mar 88  19:02   79CB
  89. DIA.PAS           4743  Crunched   51%      2306  25 Mar 88  17:02   5BA6
  90. DIAL.PAS          1465  Crunched   42%       847  25 Mar 88  17:02   8D78
  91. DOALL.BAT          282  Crunched   18%       231  26 Mar 88  15:16   C15D
  92. FINDCHRS.PAS      1134  Crunched   46%       603  25 Mar 88  17:02   349B
  93. FMAP.PAS          5425  Crunched   56%      2387  25 Mar 88  17:02   FAC9
  94. LINKLIST.PAS      1845  Crunched   54%       847  25 Mar 88  17:02   4D72
  95. LOOK.BAT            34    -----     1%        34  12 Mar 88  12:46   9DA4
  96. MINICRT.PAS       7092  Crunched   60%      2768  25 Mar 88  17:02   9229
  97. MTPLUS.PAS        1358  Crunched   39%       826  25 Mar 88  17:02   BC1E
  98. POINT4.PAS         561  Crunched   41%       326  25 Mar 88  17:02   DE9D
  99. POINTERS.PAS       478  Crunched   32%       321  25 Mar 88  17:02   D65B
  100. PUZZLE.PAS        4795  Crunched   60%      1875  25 Mar 88  17:02   9841
  101. QSORT.PAS         2240  Crunched   61%       852  25 Mar 88  17:02   1ABA
  102. README            4062  Crunched   46%      2192  26 Mar 88  12:38   FB42
  103. SETS.PAS          2116  Crunched   53%       986  25 Mar 88  17:02   C94E
  104. SIEVE.PAS          793  Crunched   47%       416  25 Mar 88  17:02   FCFA
  105. SMALLREC.PAS       868  Crunched   38%       533  25 Mar 88  17:02   5A5E
  106. SUBRANGE.PAS      1010  Crunched   41%       596  25 Mar 88  17:02   7130
  107. TEST.PAS          4998  Crunched   50%      2457  25 Mar 88  17:02   CC17
  108. TEST2.PAS         1641  Crunched   59%       664  25 Mar 88  17:02   2AC5
  109. TIMEDAT4.PAS       418  Crunched   26%       307  25 Mar 88  17:02   7373
  110. UNSQ.PAS         23602  Crunched   55%     10456  25 Mar 88  17:02   D16F
  111. VARREC.PAS        2075  Crunched   45%      1133  25 Mar 88  17:02   8F97
  112. >*total     26   73488             53%     34296
  113.  
  114. Revision history of TPTC
  115. ------------------------
  116.  
  117. 09/09/85  v0.0  (paspp)
  118.    Initial coding by Samuel H. Smith.  Never released.
  119.  
  120. 12/19/86  v1.0
  121.    First distributed as TPC10 under shareware concept.
  122.  
  123. 04/15/87  v1.1
  124.    Corrected handling of unary minus. Improved error messages; added
  125.    error messages to object file. Added handler for integer subrange
  126.    types. Added handling for goto statement and numeric labels. The
  127.    macro header, tpcmac.h, now contains more declarations. Distributed
  128.    as TPC11.
  129.  
  130. 04/22/87  v1.2
  131.    Corrected an error that led to a crash on lines with more than 40
  132.    leading spaces.  Distributed as TPC12.
  133.  
  134. 05/20/87  v1.3
  135.    Added support for pascal/MT+:  external procedures and variables,
  136.    special write/read indirect syntax, & and ! operators, default string
  137.    size for string declarations. Distributed as TPC13.
  138.  
  139. 05/26/87  v1.4
  140.    Additional support for pascal/MT+.   The translator "shifts" into a
  141.    MT+ specific mode when it recognizes the 'MODULE' statement. The '|'
  142.    operator is recognized for bitwise OR. The '\', '?' and '~' operators
  143.    are all translated into a unary not. Read(ln) and Write(ln) now
  144.    support the special case of "[]" for the I/O routine. Long integer
  145.    literals are translated from '#nnn' to 'nnnL'
  146.  
  147. 06/01/87  v1.5
  148.    Added new command-line parser. Added -lower option to map identifiers
  149.    to lower case. Added -mt option to force pascal/mt+ mode. Added
  150.    partial var-parameter translation. Mem, MemW, Port and PortW are all
  151.    translated into Turbo C. Turbo-c procedure declaration syntax is now
  152.    used. Arrays may now be subscripted by enumeration types. Null else
  153.    clause now handled properly in IF and CASE statements. For .. downto
  154.    is now translated correctly. The VAL..VAL form is now translated in
  155.    case statements.
  156.  
  157. ---------------
  158. -- detect concat(concat... and replace with a sprintf variant
  159. -- changed sprintf calls to sbld calls to preserve sources during build
  160. -- pos(c,str) and pos(str,str) are now separately translated
  161. -- added 'base' to symbol table; use to add base-subscript offset
  162.    in all subscript references.
  163. -- moved typename translations to tpcmac.h header
  164. -- fixed bug in non-translation of tshell directives
  165. -- forward pointer declarations
  166. -- translate inline into asm statements
  167. -- complete forward translation
  168.  
  169. 10/13/87
  170. -- improved string and array parameter translations
  171. -- string returns are now translated into char *
  172.  
  173. 10/15/87
  174. -- corrected error in typed constant translation where nested records
  175.    are initialized. 
  176. -- variant record declarations are translated into unions but no variant
  177.    expression translations are done. 
  178. -- changed nested procedure error messages to include procedure name.
  179.  
  180. ---------------
  181. 02/13/88 v1.6
  182.   Converted to TPAS 4.0 format; released under the SourceWare concept
  183.   (see README and LICENSE.DOC).  
  184.  
  185. ---------------
  186. 03/10/88 v1.6a
  187. -- corrected recent errors in #include translation and -include processing.
  188. -- changes in status display and error message formats.
  189. -- translation of multi-dimensional and nested array declarations.
  190. -- translation of untyped var parameters.
  191. -- partial translation of absolute variable declarations.
  192. -- improved data type declaration in expressions with subscripts.
  193.  
  194. 03/11/88
  195. -- new method of expression type tracking; type botching is greatly
  196.    reduced while speeding execution.
  197. -- rewrote include file handler to allow nested includes.
  198.  
  199. 03/12/88
  200. -- implemented proper procedure ordering for nested procedures (inmost
  201.    procedures are output first, followed by outer procedures).
  202. -- shortened command-line options to single letters.   
  203. -- added -W option to allow specification of a RAMDISK for work files.
  204.  
  205. 03/13/88
  206. -- added translation of :(expression) parameters in write statements.
  207. -- corrected translation of 'actual' VAR and untyped parameters. 
  208. -- improved type detection in record member references.
  209. -- created 'uninc' postprocessor to split up output into original
  210.    include files (placed in a user specified destination directory).
  211. -- added 't2c.bat' batch file to combine translation and include processing.
  212. -- added code to ignore tp4.0 interface sections.
  213.  
  214. 03/14/88
  215. -- improved indentation in generated code for variant record decls (remember,
  216.    tptc is NOT a pretty printer!  use CB or INDENT to get pretty indentation).
  217.  
  218. 03/15/88
  219. -- added boolean as a basic type; this allows automatic selection of &, |
  220.    and &&, || in expressions.
  221. -- implemented translation for 'str' standard procedure.
  222. -- partial translation of 'val' procedure.
  223. -- better implementation of subscript base value translation.
  224. -- better type tracking in subscripted variables.
  225.  
  226. 03/16/88
  227. -- added macros for paramcount and paramstr instead of specific translations.
  228. -- corrected implementation of mt+ translation for write([proc],...) form.
  229. -- added unique prefix on local #define's to prevent name clashes.
  230. -- added specific translations for \r, \n, \b, \e character constants.
  231. -- added translation for intr() and msdos() calls.
  232. -- implemented constant folding in trivial cases where index bases are added.
  233. -- added translation of @(...) operator.
  234.  
  235. 03/17/88
  236. -- corrected translation of pointers to simple types.
  237. -- improved translation of character and numeric subrange types.
  238. -- partial translation of set expressions.
  239. -- corrected enumeration-type subscript range calculation.
  240. -- added -Tnn command option to control tabstops in declarations.
  241. -- changes in symbol table and parser for 20% faster operation.
  242.  
  243. 03/18/88
  244. -- disable '#...' translation (tshell passing) without -# option.
  245. -- exit all nested procs in fatal error handler.
  246. -- added symbol table entries for 'builtin' procedure translations (allows
  247.    user redefinition of 'pos', for example).
  248. -- predefined symbol table entries are reported only if -DP option is used.
  249. -- partial translation of 'with' statements.
  250.  
  251. 03/19/88
  252. -- slight improvement in recovery from syntax errors.
  253. -- corrected parsing of initialized set constants.
  254.  
  255. 03/21/88
  256. -- added -B option for deBug trace while scanning source file.
  257. -- changed numeric character literals from octal to hex.
  258. -- added warning if pascal string length byte is used in expressions.
  259. -- implemented translation of ^c^c (multiple control character literals).
  260. -- eliminated recursion in scanning consecutive comments.
  261. -- added specific translations for \a, \f, \t, \v character literals.
  262. -- corrected translation of ^.,  ^[, and #$hex character literals.
  263. -- added ".pas" default on include filenames.
  264. -- corrected translation of "external 'file.ext'..." procedure option.
  265.  
  266. 03/22/88
  267. -- corrected parsing error that could cause lockup at end of translation.
  268. -- added translation from chr(lit) to character literals where possible.
  269. -- allowed redefinition of 'exit' procedure.
  270. -- corrected empty case statement and empty then-before-else translation.
  271. -- corrected &* possibility in fscanv.
  272. -- improved output format in inline translation.
  273. -- added -BP option for deBug trace of statement Parsing.
  274. -- implemented proper local symbol tables in nested functions.
  275.  
  276. 03/23/88
  277. -- corrected translation of :(expr) in write when expr starts with a digit.
  278. -- added runtime check for too many procedure parameters.
  279. -- better handling of nested with statements.
  280. -- partial translation of with dependant expressions.
  281. -- changed constant declarations from #define to 'const' to allow full
  282.    scoping rules. (this doesn't work with tc1.0!)
  283.    
  284. 03/24/88
  285. -- partial translation of expressions accessing variant record members.
  286. -- better handling of forward redeclarations that are incomplete.
  287. -- implemented translation of TP4 units
  288.         -- 'interface' section creates .UNS file with TPTC symbol table
  289.            information saved for later use.
  290.         -- 'interface' section creates .UNH header file for inclusion
  291.            in C sources using the unit
  292.         -- 'uses' section generates include of .UNH header and loads
  293.            the .UNS data into the current symbol table
  294.    you must translate SYSTEM.DOC, DOS.DOC, etc, before units USING these
  295.    can be translated.
  296. -- implemented translations for $DEFINE, $IFDEF, $IFNDEF, $ELSE and $ENDIF.
  297. -- moved standard symbol table entries to the special unit TPTCSYS.PAS,
  298.    which is implicitly "used" in each translation.  TPTCSYS.UNS must be
  299.    in the default directory when TPTC is called.  this eliminates the need
  300.    for special translations for val, intr, msdos and many other standard 
  301.    procedures with VAR parameters.
  302. -- implemented translation of 'inline' procedures (tp4).
  303.  
  304. ---------------
  305. 03/25/88 v1.7
  306. -- repackaged into three archives:  tptc17 (main file; translator, docs and
  307.    supporting files), tptc17sc (source code), tptc17tc (test cases).
  308. -- cosmetic changes in code generation for interface sections.
  309. -- implemented 'as new_name' clause for specification of a different 
  310.    procedure/function name in the translated code (see tptcsys.pas).
  311. -- inline procedures in an interface section generate a warning since
  312.    they cannot be translated in this context.
  313. -- added -Sdir option to specify a search directory for .UNS symbol files
  314.    that are not in the default directory.
  315. -- default command-line options can be specified through the TPTC 
  316.    environment variable from dos.
  317.    
  318. 03/26/88
  319. -- changes in $i parsing (fixed case where '$i fxxx' parsed as '$ifdef xxx')
  320. -- changed untyped constants back to #defines despite the scoping problems
  321.    (sure wish borland had fully implemented 'const' declarations).
  322. -- corrected translation of 'type mine = ^simple' where simple is already
  323.    defined (tptc was doing a forward-type translation sometimes).
  324.